home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / ModeProSrc.lha / Prefs / MPPGadgets.c < prev    next >
C/C++ Source or Header  |  2000-09-17  |  22KB  |  770 lines

  1. #define CATCOMP_ARRAY
  2.  
  3. #include "MPP.h"
  4. #include "mppexterns.h"
  5. //#include <extras/gui.h>
  6. #include <utility/hooks.h>
  7. #include <intuition/sghooks.h>
  8. #include <intuition/gadgetclass.h>
  9. #include <proto/locale.h>
  10. #include <proto/utility.h>
  11. #include <extras/ext_text.h>
  12. #include <ctype.h>
  13. #include <debug.h>
  14.  
  15. void InitNewMenus(struct NewMenu *NM);
  16.  
  17.  
  18. extern struct NewMenu pr_PaletteMenu[];
  19. extern struct Window *Win;
  20. extern struct DrawInfo *DrawInfo;
  21. extern APTR VI;
  22. extern float XScale,YScale;
  23.  
  24. char __stdiowin[]="";
  25.  
  26. /* Errors strings for OpenLibs() */
  27. STRPTR  LibErrorString,
  28.         LibNameVerFmt,
  29.         LibOk;
  30.  
  31. extern struct LocaleBase *LocaleBase;
  32. extern struct Catalog *Catalog;
  33.  
  34. UBYTE PenNameGad[32];
  35.  
  36. struct   NewMenu nm[]=
  37. {
  38.   {NM_TITLE ,(STRPTR)MSG_M_PROJECT              ,0  ,0,0,0},
  39.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_OPEN        ,(STRPTR)MSG_MI_PROJECT_OPEN_KEY        ,0,0,(APTR)M_OPEN},
  40.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_SAVE_AS     ,(STRPTR)MSG_MI_PROJECT_SAVE_AS_KEY     ,0,0,(APTR)M_SAVEAS},
  41.     {NM_ITEM  ,NM_BARLABEL                ,0  ,0,0,0},
  42.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_IMPORT      ,(STRPTR)MSG_MI_PROJECT_IMPORT_KEY      ,0,0,(APTR)M_IMPORT},
  43.     {NM_ITEM  ,NM_BARLABEL                ,0  ,0,0,0},
  44.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_ABOUT       ,(STRPTR)MSG_MI_PROJECT_ABOUT_KEY       ,0,0,(APTR)M_ABOUT},
  45.     {NM_ITEM  ,NM_BARLABEL                ,0 ,0,0,0},
  46.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_HIDE        ,(STRPTR)MSG_MI_PROJECT_HIDE_KEY        ,0,0,(APTR)M_HIDE},
  47.     {NM_ITEM  ,NM_BARLABEL                ,0 ,0,0,0},
  48.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_QUIT        ,(STRPTR)MSG_MI_PROJECT_QUIT_KEY        ,0,0,(APTR)M_QUIT},
  49.  
  50.   {NM_TITLE ,(STRPTR)MSG_M_EDIT                 ,0  ,0,0,0},
  51.     {NM_ITEM  ,(STRPTR)MSG_MI_EDIT_LAST_SAVED     ,(STRPTR)MSG_MI_EDIT_LAST_SAVED_KEY     ,0,0,(APTR)M_LASTSAVED},
  52.     {NM_ITEM  ,(STRPTR)MSG_MI_EDIT_RESTORE        ,(STRPTR)MSG_MI_EDIT_RESTORE_KEY        ,0,0,(APTR)M_RESTORE},
  53.     {NM_ITEM  ,NM_BARLABEL                        ,0 ,0,0,0},
  54.     {NM_ITEM  ,(STRPTR)MSG_MI_EDIT_COPY_TO        ,(STRPTR)0                              ,0,0,(APTR)M_COPY_TO},
  55.       {NM_SUB   ,(STRPTR)MSG_MS_EDIT_COPY_SCR       ,(STRPTR)MSG_MS_EDIT_COPY_SCR_KEY       ,0,0,(APTR)M_COPY_TO_SCR},
  56.       {NM_SUB   ,(STRPTR)MSG_MS_EDIT_COPY_PRG       ,(STRPTR)MSG_MS_EDIT_COPY_PRG_KEY       ,0,0,(APTR)M_COPY_TO_PRG},
  57.       {NM_SUB   ,(STRPTR)MSG_MS_EDIT_COPY_SMODE     ,(STRPTR)MSG_MS_EDIT_COPY_SMODE_KEY     ,0,0,(APTR)M_COPY_TO_SMODE},
  58.       {NM_SUB   ,(STRPTR)MSG_MS_EDIT_COPY_PUB       ,(STRPTR)MSG_MS_EDIT_COPY_PUB_KEY       ,0,0,(APTR)M_COPY_TO_PUB},
  59.     {NM_ITEM  ,NM_BARLABEL                        ,0 ,0,0,0},
  60.     {NM_ITEM  ,(STRPTR)MSG_MI_EDIT_SORT_LIST      ,(STRPTR)MSG_MI_EDIT_SORT_LIST_KEY      ,0,0,(APTR)M_SORT},
  61.  
  62.  
  63.   {NM_TITLE ,(STRPTR)MSG_M_SETTINGS              ,0 ,0,0,0},
  64.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_ENABLE_PROMO,(STRPTR)MSG_MI_PROJECT_ENABLE_PROMO_KEY,CHECKIT|MENUTOGGLE|CHECKED,0,(APTR)M_ENABLED},
  65.     {NM_ITEM  ,(STRPTR)MSG_MI_PROJECT_ENABLE_NLM  ,(STRPTR)MSG_MI_PROJECT_ENABLE_NLM_KEY  ,CHECKIT|MENUTOGGLE|CHECKED,0,(APTR)M_ENABLENL},
  66.     {NM_ITEM  ,NM_BARLABEL                ,0 ,0,0,0},
  67.     {NM_ITEM  ,(STRPTR)MSG_MI_SETTINGS_UNKNOWN     ,(STRPTR)MSG_MI_SETTINGS_UNKNOWN_KEY     ,CHECKIT|MENUTOGGLE,0,(APTR)M_SET_UNKNOWN},
  68.     {NM_ITEM  ,(STRPTR)MSG_MI_SETTINGS_UNKNOWN_PUB ,(STRPTR)MSG_MI_SETTINGS_UNKNOWN_PUB_KEY ,CHECKIT|MENUTOGGLE,0,(APTR)M_SET_UNKNOWN_PUB},
  69.     {NM_ITEM  ,(STRPTR)MSG_MI_SETTINGS_CENTER      ,(STRPTR)0                               ,CHECKIT|MENUTOGGLE,0,(APTR)M_SET_CENTER},
  70.       {NM_SUB   ,(STRPTR)MSG_MS_SETTINGS_CENTER_H    ,(STRPTR)MSG_MS_SETTINGS_CENTER_H_KEY    ,CHECKIT|MENUTOGGLE,0,(APTR)M_SET_CENTER_H},
  71.       {NM_SUB   ,(STRPTR)MSG_MS_SETTINGS_CENTER_V    ,(STRPTR)MSG_MS_SETTINGS_CENTER_V_KEY    ,CHECKIT|MENUTOGGLE,0,(APTR)M_SET_CENTER_V},
  72.  
  73.   {NM_END   ,NULL                       ,0 ,0,0,0}
  74. };
  75.  
  76. struct GUI_String GText[]=
  77. {
  78.   198 ,(STRPTR)MSG_G_UK_NEW_ENTRY,
  79.   198 ,(STRPTR)MSG_G_UK_ENTRY_TYPE,
  80.   112 ,(STRPTR)MSG_G_UK_SAVE_USE,
  81.   112 ,(STRPTR)MSG_G_UK_USE_DELETE,
  82.   112 ,(STRPTR)MSG_G_UK_NEVER_AGAIN,
  83.   112 ,(STRPTR)MSG_G_UK_CANCEL,
  84.   170 ,(STRPTR)MSG_G_PROGRAM_NAMES,
  85.   170 ,(STRPTR)MSG_G_SCREEN_NAMES,
  86.   170 ,(STRPTR)MSG_G_SCREEN_MODES,
  87.   170 ,(STRPTR)MSG_G_PUBLIC_SCREENS,
  88.   82  ,(STRPTR)MSG_G_NEW,
  89.   82  ,(STRPTR)MSG_G_REMOVE,
  90.   180 ,(STRPTR)MSG_G_SELECT_NAME,
  91.    80 ,(STRPTR)MSG_G_PROMOTION,
  92.   160 ,(STRPTR)MSG_G_PROMOTE_USE_PROG_DEFAULTS,
  93.   160 ,(STRPTR)MSG_G_PROMOTE_MONITOR_TYPE,
  94.   160 ,(STRPTR)MSG_G_PROMOTE_SCREEN_MODE,
  95.   160 ,(STRPTR)MSG_G_PROMOTE_USE_REQUESTER,
  96.   160 ,(STRPTR)MSG_G_PROMOTE_BEST_MODE, // <----------//                                               (4.57.16)
  97.   218 ,(STRPTR)MSG_G_UNKNOWN_PROMOTION_MODE,
  98.   218 ,(STRPTR)MSG_G_SELECT_SCREEN_MODE,
  99.   82  ,(STRPTR)MSG_G_OVERSCAN,
  100.   128 ,(STRPTR)MSG_G_OS_TEXT_SIZE,
  101.   128 ,(STRPTR)MSG_G_OS_GRAPHICS_SIZE,
  102.   128 ,(STRPTR)MSG_G_OS_EXTREME_SIZE,
  103.   128 ,(STRPTR)MSG_G_OS_MAXIMUM_SIZE,
  104.   56  ,(STRPTR)MSG_G_WIDTH,
  105.   64  ,(STRPTR)MSG_G_HEIGHT,
  106.   72  ,(STRPTR)MSG_G_COLORS,
  107.   32  ,(STRPTR)MSG_G_256, 
  108.   190 ,(STRPTR)MSG_G_AUTOSCROLL,
  109.   82  ,(STRPTR)MSG_G_CENTER,
  110.   190 ,(STRPTR)MSG_G_INTERLEAVE,
  111.   190 ,(STRPTR)MSG_G_FORCE_PLANAR,
  112.   190 ,(STRPTR)MSG_G_BLANK_BORDER,
  113.   190 ,(STRPTR)MSG_G_BEHIND,
  114.   82  ,(STRPTR)MSG_G_PALETTE,
  115.   126 ,(STRPTR)MSG_G_EDIT_PALETTE,
  116.   120 ,(STRPTR)MSG_G_CENTER_NO,
  117.   120 ,(STRPTR)MSG_G_CENTER_HORZ,
  118.   120 ,(STRPTR)MSG_G_CENTER_VERT,
  119.   120 ,(STRPTR)MSG_G_CENTER_BOTH ,
  120.   100 ,(STRPTR)MSG_G_FONT,
  121.   100 ,(STRPTR)MSG_G_FONT_PROGRAM,
  122.   100 ,(STRPTR)MSG_G_FONT_SYSTEM,
  123.   100 ,(STRPTR)MSG_G_FONT_SPECIFY,
  124.   218 ,(STRPTR)MSG_G_FONT_SELECT,
  125.   200 ,(STRPTR)MSG_G_FONT_FIX_ASPECT,
  126.   137 ,(STRPTR)MSG_G_3D_LOOK,
  127.   163 ,(STRPTR)MSG_G_3D_RESET,
  128.   150 ,(STRPTR)MSG_G_3D_DETAIL,
  129.   150 ,(STRPTR)MSG_G_3D_BLOCK,
  130.   150 ,(STRPTR)MSG_G_3D_TEXT,
  131.   150 ,(STRPTR)MSG_G_3D_SHINE,
  132.   150 ,(STRPTR)MSG_G_3D_SHADOW,
  133.   150 ,(STRPTR)MSG_G_3D_FILL,
  134.   150 ,(STRPTR)MSG_G_3D_FILL_TEXT,
  135.   150 ,(STRPTR)MSG_G_3D_BACKGROUND,
  136.   150 ,(STRPTR)MSG_G_3D_HIGHLIGHT_TEXT,
  137.   150 ,(STRPTR)MSG_G_3D_BAR_DETAIL,
  138.   150 ,(STRPTR)MSG_G_3D_BAR_BLOCK,
  139.   150 ,(STRPTR)MSG_G_3D_BAR_TRIM,
  140.   146 ,(STRPTR)MSG_G_MAKE_PUBLIC,
  141.    85 ,(STRPTR)MSG_G_PUB_NAME,
  142.   146 ,(STRPTR)MSG_G_SHARE_PENS,
  143.    85 ,(STRPTR)MSG_G_SP_EXCLUDE,
  144.   146 ,(STRPTR)MSG_G_DO_HOTKEY,
  145.    85 ,(STRPTR)MSG_G_HOTKEY,
  146.    42 ,(STRPTR)MSG_G_BACKDROPFILE,
  147.   146 ,(STRPTR)MSG_G_BACKDROPCENTER,
  148.   76  ,(STRPTR)MSG_G_BACKDROP_OPT_NONE,
  149.   76  ,(STRPTR)MSG_G_BACKDROP_OPT_PICTURE,
  150.   76  ,(STRPTR)MSG_G_BACKDROP_OPT_COLOR,
  151.   163 ,(STRPTR)MSG_G_BACKDROP_COLOR,
  152.     0 ,NULL,
  153. };
  154.  
  155. UBYTE PenNames[DRIPENS][32];
  156.  
  157. WORD PenNameLength[DRIPENS];
  158.  
  159. UWORD PenNumbers[]=
  160. {
  161.   DETAILPEN,
  162.   BLOCKPEN,
  163.   TEXTPEN,
  164.   SHINEPEN,
  165.   SHADOWPEN,
  166.   FILLPEN,
  167.   FILLTEXTPEN,
  168.   BACKGROUNDPEN,
  169.   HIGHLIGHTTEXTPEN,
  170.   BARDETAILPEN,
  171.   BARBLOCKPEN,
  172.   BARTRIMPEN
  173. /*
  174.   ,12,
  175.   13,
  176.   14*/
  177. };
  178.  
  179. extern STRPTR BackdropLabels[];
  180. extern STRPTR ForcedEditLabels[];
  181.  
  182. UBYTE *ListLabels[]=
  183. {
  184.     (UBYTE *)MSG_G_SCREEN_NAMES,
  185.     (UBYTE *)MSG_G_PROGRAM_NAMES,
  186.   (UBYTE *)MSG_G_SCREEN_MODES,
  187.   (UBYTE *)MSG_G_PUBLIC_SCREENS,
  188.     NULL
  189. };
  190.  
  191. UBYTE *ModeSelLabels[]=
  192. {
  193.     (UBYTE *)MSG_G_PROMOTE_USE_PROG_DEFAULTS,
  194.   (UBYTE *)MSG_G_PROMOTE_MONITOR_TYPE,
  195.     (UBYTE *)MSG_G_PROMOTE_SCREEN_MODE,
  196.     (UBYTE *)MSG_G_PROMOTE_USE_REQUESTER,
  197.   (STRPTR) MSG_G_PROMOTE_BEST_MODE, // <----------//                                                   (4.57.2)
  198.     NULL
  199. };
  200.  
  201. UBYTE *OverscanLabels[]=
  202. {
  203.     (UBYTE *)MSG_G_OS_TEXT_SIZE,
  204.     (UBYTE *)MSG_G_OS_GRAPHICS_SIZE,
  205.     (UBYTE *)MSG_G_OS_EXTREME_SIZE,
  206.     (UBYTE *)MSG_G_OS_MAXIMUM_SIZE,
  207.     NULL
  208. };
  209.  
  210. UBYTE *SFontLabels[]=
  211. {
  212.   (STRPTR)MSG_G_FONT_PROGRAM,
  213.   (STRPTR)MSG_G_FONT_SYSTEM,
  214.   (STRPTR)MSG_G_FONT_SPECIFY,
  215.   NULL
  216. };
  217.  
  218. UBYTE *CenterLabels[]=
  219. {
  220.   (STRPTR)MSG_G_CENTER_NO,
  221.   (STRPTR)MSG_G_CENTER_HORZ,
  222.   (STRPTR)MSG_G_CENTER_VERT,
  223.   (STRPTR)MSG_G_CENTER_BOTH,
  224.   NULL
  225. };
  226.  
  227. STRPTR ColorStrings[]=
  228. {
  229.   "Error",
  230.   "2",
  231.   "4",
  232.   "8",
  233.   "16",
  234.   "32",
  235.   "64",
  236.   "128",
  237.   "256",
  238.   "16 Bit",
  239.   "24 Bit",
  240.   "32 Bit"
  241. };
  242.  
  243.  
  244. ULONG   __saveds __asm ExcludeHook(register __a0 struct Hook *hook,
  245.                                    register __a1 ULONG *Msg,
  246.                                    register __a2 struct SGWork *SW)
  247. {
  248.   ULONG return_code=~0;
  249.   UWORD code;
  250.  
  251.   if (*Msg == SGH_KEY)
  252.   {
  253.     if ((SW->EditOp == EO_REPLACECHAR) || (SW->EditOp == EO_INSERTCHAR))
  254.     {
  255.       code=SW->Code;
  256.       if((code<'0' || code >'9') && (code!=',' && code!=' ' && code!='-'))
  257.       {
  258.         
  259.         SW->Actions |= SGA_BEEP;
  260.         SW->Actions &= ~SGA_USE;
  261.       }
  262.     }
  263.     else 
  264.     {
  265.       /* UNKNOWN COMMAND
  266.       ** hook should return zero if the command is not supported.
  267.       */
  268.       return_code = 0;
  269.     }
  270.   }
  271.   return(return_code);
  272. }
  273.  
  274. ULONG   __saveds __asm PenValFunc(register __a0 struct Hook *hook,
  275.                                    register __a1 ULONG *Msg,
  276.                                    register __a2 struct SGWork *SW)
  277. {
  278.   ULONG return_code=~0;
  279.  
  280. //  kprintf("Msg %7ld - EditOp %8lx - SW->Code %7ld - IE->ieClass %4lx - IE->ieCode %4lx\n",*Msg,SW->EditOp,SW->Code,SW->IEvent->ie_Class,SW->IEvent->ie_Code);
  281.  
  282.   if (*Msg == SGH_KEY)
  283.   {
  284.     switch(SW->EditOp)
  285.     {/*
  286.       case EO_REPLACECHAR:
  287.       case EO_INSERTCHAR:
  288.         code=SW->Code;
  289.         if((code<'0' || code >'9') && (code!='+' && code!='-'))
  290.         {
  291.           SW->Actions |= SGA_BEEP;
  292.           SW->Actions &= ~SGA_USE;
  293.         }
  294.         break;*/
  295.       case EO_NOOP:
  296.         if(SW->IEvent->ie_Class==IECLASS_RAWKEY)
  297.         {
  298.           switch(SW->IEvent->ie_Code)
  299.           {
  300.             case CURSORUP:
  301.             case CURSORDOWN:
  302.               SW->Code=SW->IEvent->ie_Code;
  303.               SW->Actions |= SGA_END;
  304.               SW->Actions &=~(SGA_NEXTACTIVE | SGA_PREVACTIVE);
  305.               break;
  306.           }
  307.         } 
  308.         break;
  309.       default: 
  310.         /* UNKNOWN COMMAND
  311.         ** hook should return zero if the command is not supported.
  312.         */
  313.         return_code = 0;
  314.     }
  315.   }
  316.   return(return_code);
  317. }
  318.  
  319.  
  320. STRPTR MiscText[]=
  321. {
  322.   (STRPTR)MSG_ITEM_NEW_NAME,
  323.   (STRPTR)MSG_ITEM_NO_NAME,
  324.   (STRPTR)MSG_REQ_OK,
  325.   (STRPTR)MSG_REQ_LOAD_MP_PREFS,
  326.   (STRPTR)MSG_REQ_SAVE_MP_PREFS,
  327.   (STRPTR)MSG_REQ_LOAD_ERROR,
  328.   (STRPTR)MSG_REQ_SAVE_ERROR,
  329.   (STRPTR)MSG_REQ_SELECT_SCREEN_FONT,
  330.   (STRPTR)MSG_REQ_SELECT_SCREENMODE_FOR,
  331.   (STRPTR)MSG_G_UNKNOWN_PROMOTION_MODE,
  332.   (STRPTR)MSG_G_MILLION,
  333.   0
  334. };
  335.  
  336. #define GetArrayStrings(x) for(l=0;x[l];l++) x[l]=GetString((LONG)x[l])
  337.  
  338.  
  339. #define LST_X     5
  340. #define LST_Y     4
  341.  
  342. #define OPT_X   209
  343. #define OPT_Y   101
  344. #define OPT_X2  (OPT_X + 116)
  345.  
  346. #define SCR_X   209
  347. #define SCR_Y     4
  348.  
  349. #define FNT_X   209
  350. #define FNT_Y   145
  351.  
  352. #define TDL_X   453
  353. #define TDL_Y     4
  354.  
  355. #define SHR_X   453
  356. #define SHR_Y   108
  357.   
  358. #define PUB_X   453
  359. #define PUB_Y   140
  360.  
  361. #define HK_X    453
  362. #define HK_Y    171
  363.  
  364. #define SUC_X     5
  365. #define SUC_Y   202
  366.  
  367.  
  368.  
  369. struct TextArea 
  370.   ColorDisp   ={315,70,364,82,0,0,0},
  371.   PenNameDisp ={453,90,561,102,0,0,0},
  372.   FontDisp    ={FNT_X+2, FNT_Y+26+2, FNT_X + 234-3, FNT_Y+38-2,0,0,0};
  373.  
  374. WORD BevelBoxes=8;
  375. /*
  376. struct BevelBox BBox[]=
  377. {
  378.   209,  97, 239,   2, BBSCALE_WIDTH,
  379.   448, 104, 175,   2, BBSCALE_WIDTH,
  380.   448, 136, 175,   2, BBSCALE_WIDTH,
  381.   209, 141, 239,   2, BBSCALE_WIDTH,
  382.   448, 167, 175,   2, BBSCALE_WIDTH,
  383.   446,   4,   4, 195, BBSCALE_HEIGHT,
  384.     5, 198, 619,   2, BBSCALE_WIDTH,
  385.   FNT_X, FNT_Y+26, 234, 12, BBSCALE_WIDTH | BBSCALE_HEIGHT
  386. };
  387. */
  388.  
  389. struct BevelBox BBox[TOTAL_AREAS];
  390.  
  391.  
  392.  
  393.  
  394. void InitStrings(void)
  395. {
  396.   ULONG l;
  397.  
  398.   /* Init GText Strings */
  399.   for(l=0;GText[l].String;l++)
  400.     GText[l].String = GetString((LONG)GText[l].String);
  401.   
  402.   GetArrayStrings(ForcedEditLabels);
  403.   GetArrayStrings(MiscText);
  404.   GetArrayStrings(ListLabels);
  405.   GetArrayStrings(ModeSelLabels);
  406.   GetArrayStrings(OverscanLabels);
  407.   GetArrayStrings(SFontLabels);
  408.   GetArrayStrings(CenterLabels);
  409.   GetArrayStrings(BackdropLabels);
  410.  
  411.   LibErrorString = GetString(MSG_REQ_COULDNT_OPEN_LIBS);
  412.   LibNameVerFmt  = GetString(MSG_REQ_NAME_VER_FMT);
  413.   LibOk          = MiscText[OK];
  414.  
  415.   /* init menus */
  416.   
  417.   InitNewMenus(nm);
  418.   InitNewMenus(pr_PaletteMenu);
  419.   
  420.   /*
  421.   for(l=0;nm[l].nm_Type;l++)
  422.   {
  423.     if(nm[l].nm_Label != NM_BARLABEL)
  424.     {
  425.       nm[l].nm_Label  =GetString((LONG)nm[l].nm_Label);
  426.       if(nm[l].nm_CommKey=GetString((LONG)nm[l].nm_CommKey))
  427.       {
  428.         switch(strlen(nm[l].nm_CommKey))
  429.         {
  430.           case 0:
  431.             nm[l].nm_CommKey=0;
  432.             break;            
  433.           case 1:
  434.             break;
  435.           default:
  436.             nm[l].nm_Flags|=NM_COMMANDSTRING;
  437.         }
  438.       }
  439.     }
  440.   }
  441.   */
  442.   
  443.   for(l=0;l<DRIPENS;l++)
  444.   {
  445.     strncpy(PenNames[l],GetString((LONG)MSG_G_3D_DETAIL+l),24);
  446.     PenNames[l][24]=0;
  447.     PenNameLength[l]=strlen(PenNames[l]);
  448.   }
  449. }
  450.  
  451. UBYTE NullStr[]={0};
  452.  
  453.  
  454. STRPTR GetString(LONG stringNum)
  455. {
  456.   struct CatCompArrayType *CCA;
  457.   STRPTR  builtIn;
  458.   ULONG entries;
  459.  
  460.   entries=sizeof(CatCompArray)/sizeof(struct CatCompArrayType);
  461.   
  462.   if(!stringNum)
  463.     return(0);
  464.  
  465.   CCA=CatCompArray;
  466.   
  467.   while (CCA->cca_ID != stringNum && entries)
  468.   {
  469.     CCA++;
  470.     entries--;
  471.   }
  472.   builtIn = CCA->cca_Str;
  473.  
  474.   if (LocaleBase)
  475.     return(GetCatalogStr(Catalog,stringNum,builtIn));
  476.   return(builtIn);
  477. }
  478.  
  479. void WriteColorDisp(struct DefaultNode *DN)
  480. {
  481.   UBYTE str[50];
  482.   ULONG colors;
  483.  
  484.   if(ColorDisp.RightEdge>=ColorDisp.LeftEdge && ColorDisp.BottomEdge>=ColorDisp.TopEdge)
  485.   {
  486.   
  487.     EraseRect(Win->RPort,ColorDisp.RightEdge-ColorDisp.PrevWidth ,ColorDisp.TopEdge,
  488.                          ColorDisp.RightEdge ,ColorDisp.BottomEdge);
  489.   
  490.     ColorDisp.PrevWidth=0;
  491.   
  492.     if(DN)
  493.     {
  494.       if(DN->Flags & (DEPTH | DNF_PALETTE) && (DN->ModeSelect==MS_PROMOTE_SCREENMODE || DN->ModeSelect==MS_PROMOTE_REQUESTER || DN->ModeSelect==MS_PROMOTE_BEST_MODE))//  (4.57.13)
  495.       {
  496.         SetAPen(Win->RPort,DrawInfo->dri_Pens[TEXTPEN]);//                                             (4.57.22)
  497.         SetDrMd(Win->RPort,JAM1);//                                                                    (4.57.22)
  498.         gui_RenderText(Win->RPort, ColorStrings[DepthToSlider[DN->Depth]],//                               (4.57.22)
  499.                     RT_XPos         , ColorDisp.RightEdge,//                                           (4.57.22)
  500.                     RT_Baseline     , ColorDisp.Baseline,//                                            (4.57.22)
  501.                     RT_MaxWidth     , ColorDisp.Width,//                                               (4.57.22)
  502.                     RT_Justification, RTJ_RIGHT,//                                                     (4.57.22)
  503.                     RT_TextLength   , &ColorDisp.PrevWidth,//                                          (4.57.22)
  504.                     TAG_DONE); //                                                                      (4.57.22)
  505.         /*
  506.         colors=1<<DN->Depth;
  507.       
  508.         if(colors>1)
  509.         {
  510.           if(colors>999999)
  511.           {
  512.             colors/=1000000;
  513.             stci_d(str,colors);
  514.             strcat(str," ");
  515.             strcat(str,MiscText[MT_MILLION]);
  516.           }
  517.           else
  518.             stci_d(str,colors);
  519.             
  520.           SetAPen(Win->RPort,DrawInfo->dri_Pens[TEXTPEN]);
  521.           SetDrMd(Win->RPort,JAM1);
  522.           RenderText(Win->RPort,str,
  523.                     RT_XPos         , ColorDisp.RightEdge,
  524.                     RT_Baseline     , ColorDisp.Baseline,
  525.                     RT_MaxWidth     , ColorDisp.Width,
  526.                     RT_Justification, RTJ_RIGHT,
  527.                     RT_TextLength   , &ColorDisp.PrevWidth,
  528.                     TAG_DONE); 
  529.         }
  530.         */
  531.       }
  532.     }
  533.   }
  534. }
  535.  
  536. void WritePenNameDisp(STRPTR Name)
  537. {
  538.   if(PenNameDisp.RightEdge>=PenNameDisp.LeftEdge && PenNameDisp.BottomEdge>=PenNameDisp.TopEdge)
  539.   {
  540.     EraseRect(Win->RPort,PenNameDisp.RightEdge - PenNameDisp.PrevWidth  ,PenNameDisp.TopEdge,
  541.                          PenNameDisp.RightEdge ,PenNameDisp.BottomEdge);
  542.   
  543.     PenNameDisp.PrevWidth=0;
  544.   
  545.     SetAPen(Win->RPort,DrawInfo->dri_Pens[TEXTPEN]);
  546.     SetDrMd(Win->RPort,JAM1);
  547.     gui_RenderText(Win->RPort,Name,
  548.                     RT_XPos         , PenNameDisp.RightEdge,
  549.                     RT_Baseline     , PenNameDisp.Baseline,
  550.                     RT_MaxWidth     , PenNameDisp.Width,
  551.                     RT_Justification, RTJ_RIGHT,
  552.                     RT_TextLength   , &PenNameDisp.PrevWidth,
  553.                     TAG_DONE); 
  554.   }
  555. }
  556.  
  557. void WriteFontDisp(struct DefaultNode *DN)
  558. {
  559.   UBYTE fontname[50];
  560.   UBYTE work[40];
  561.   LONG l;
  562.  
  563.   if(FontDisp.RightEdge>=FontDisp.LeftEdge && FontDisp.BottomEdge>=FontDisp.TopEdge)
  564.   {
  565.     EraseRect(Win->RPort,FontDisp.LeftEdge ,FontDisp.TopEdge,
  566.                          FontDisp.RightEdge ,FontDisp.BottomEdge);
  567.   
  568.   
  569.     DrawBevelBox(Win->RPort, FontDisp.LeftEdge,
  570.                              FontDisp.TopEdge,
  571.                              FontDisp.Width,
  572.                              FontDisp.Height,
  573.                              GTBB_Recessed,    1,
  574.                              GTBB_FrameType,   1,
  575.                              GT_VisualInfo,    VI,
  576.                              TAG_DONE);
  577.     
  578.     FontDisp.PrevWidth=0;
  579.   
  580.     if(DN)
  581.     {
  582.       if(DN->FontType==SFONT_MP)
  583.       {
  584.         if(DN->Font.tta_Name)
  585.           l=strlen(DN->Font.tta_Name)-5;
  586.         else
  587.           l=0;
  588.         
  589.         l=max(0,l);
  590.         l=min(l,39);
  591.           
  592.         if(l==0)
  593.         {
  594.           fontname[0]=0;
  595.         }
  596.         else
  597.         {
  598.           CopyMem(DN->Font.tta_Name,work,l);
  599.           
  600.           work[l]=0;
  601.         
  602.           sprintf(fontname,"%s/%d",work,DN->Font.tta_YSize);
  603.         }
  604.         SetAPen(Win->RPort,DrawInfo->dri_Pens[TEXTPEN]);
  605.         SetDrMd(Win->RPort,JAM1);
  606.         gui_RenderText(Win->RPort,fontname,
  607.                     RT_XPos         , FontDisp.LeftEdge+(FontDisp.Width>>1),
  608.                     RT_Baseline     , FontDisp.Baseline,
  609.                     RT_MaxWidth     , FontDisp.Width,
  610.                     RT_Justification, RTJ_CENTER,
  611.                     RT_TextLength   , &FontDisp.PrevWidth,
  612.                     TAG_DONE); 
  613.       }
  614.     }
  615.   }
  616. }
  617.  
  618. void MyBevelBox(struct RastPort *RP, WORD Left, WORD Top, WORD Width, WORD Height);
  619.  
  620. void RefreshGUI(void)
  621. {
  622.   struct DefaultNode *dn;
  623.   ULONG l;
  624.   
  625.   dn=GetActiveNode();
  626.  
  627.   for(l=0;l<TOTAL_AREAS-1;l++)
  628.   {
  629.     /*
  630.     BBox[l].X=GadgetArea[l].Left-4;
  631.     BBox[l].Width=GadgetArea[l].Width+8;
  632.     BBox[l].Y=GadgetArea[l].Top-2;
  633.     BBox[l].Height=GadgetArea[l].Height+4;
  634.     BBox[l].Scale=2;
  635.     */
  636.     
  637.     MyBevelBox(Win->RPort,(GadgetArea[l].Left-3)*XScale+Win->BorderLeft,(GadgetArea[l].Top-3)*YScale+Win->BorderTop,(GadgetArea[l].Width+6)*XScale,(GadgetArea[l].Height+6)*YScale);
  638.     
  639. //    DrawBevelBox(Win->RPort,(GadgetArea[l].Left-4)*XScale+Win->BorderLeft,(GadgetArea[l].Top-2)*YScale+Win->BorderTop,(GadgetArea[l].Width+8)*XScale,(GadgetArea[l].Height+4)*YScale,
  640. //                    GTBB_Recessed,    1,
  641. //                    GTBB_FrameType,   0,
  642. //                    GT_VisualInfo,    VI,
  643. //                    TAG_DONE);
  644.   }
  645.  
  646. //  DrawBevelBoxes(Win,VI,BBox,TOTAL_AREAS,XScale,YScale);
  647.   WriteColorDisp(dn);
  648.   WriteFontDisp(dn);
  649.   WritePenNameDisp(PenNameGad);
  650. }
  651.  
  652. void MyBevelBox(struct RastPort *RP, WORD Left, WORD Top, WORD Width, WORD Height)
  653. {
  654.   struct RastPort rp;
  655.   WORD Right,Bottom;
  656.   
  657.   Right  = Left + Width  - 1;
  658.   Bottom = Top  + Height - 1;
  659.   
  660.   rp=*RP;
  661.  
  662.  
  663. //#define SIMPLEGRP
  664.  
  665. #ifdef SIMPLEGRP
  666.   SetAPen(&rp,DrawInfo->dri_Pens[SHINEPEN]);
  667.   Move(&rp,Left     , Bottom);
  668.   Draw(&rp,Left     , Top);
  669.   Draw(&rp,Right    , Top);
  670.   
  671.   SetAPen(&rp,DrawInfo->dri_Pens[SHADOWPEN]);
  672.   Draw(&rp,Right    , Bottom);
  673.   Draw(&rp,Left     , Bottom);
  674. #else
  675.   SetAPen(&rp,DrawInfo->dri_Pens[SHINEPEN]);
  676.   Move(&rp,Left+1   , Top+1);
  677.   Draw(&rp,Right    , Top+1);
  678.   Draw(&rp,Right    , Bottom);
  679.   Draw(&rp,Left+1   , Bottom);
  680.   Draw(&rp,Left+1   , Top+1);
  681.   
  682.   SetAPen(&rp,DrawInfo->dri_Pens[SHADOWPEN]);
  683.   Move(&rp,Left     , Top);
  684.   Draw(&rp,Right-1  , Top);
  685.   Draw(&rp,Right-1  , Bottom-1);
  686.   Draw(&rp,Left     , Bottom-1);
  687.   Draw(&rp,Left     , Top);
  688. #endif
  689. }
  690.  
  691.  
  692.  
  693.  
  694. /*
  695. struct BFBounds
  696. {
  697.   struct Layer *Layer;
  698.   struct Rectangle Rect;
  699.   LONG  OffsetX,
  700.         OffsetY;
  701. };
  702.  
  703. struct Hook MainWinHook, 
  704.             PaletteWinHook;
  705.  
  706.  
  707. ULONG   __saveds __asm WinBackFillHook(register __a0 struct Hook *Hook,
  708.                                    register __a1 struct BFBounds *BF,
  709.                                    register __a2 struct RastPort *RP)
  710. {
  711.   SetAPen(RP,((LONG)Hook->h_Data)+1);
  712.   RectFill(RP, BF->Rect.MinX, BF->Rect.MinY,
  713.                BF->Rect.MaxX, BF->Rect.MaxY);
  714.  
  715.   kprintf("%8lx %ld %ld %ld %ld %ld %ld\n",RP,BF->Rect.MinX,BF->Rect.MinY,BF->Rect.MaxX,BF->Rect.MaxY,BF->OffsetX,BF->OffsetY);
  716. }
  717. */
  718.  
  719.  
  720. /*
  721. struct LG_RetVal MatchKey2Gad(ULONG Key, struct LetterGad *LG)
  722. {
  723.   UWORD l;
  724.   UWORD c;
  725.   char *d;
  726.   struct LG_RetVal rv={0xffff,0xffff};
  727.   
  728.   for(l=0;LG[l].String!=(STRPTR)~0;l++)
  729.   {
  730.     d=LG[l].String;
  731.     for(c=0;d[c];c++)
  732.     {
  733.       if(d[c]==Key)
  734.       {
  735.         rv.GadID=LG[l].GadID;
  736.         rv.Char =c;
  737.         return(rv);
  738.       }
  739.     }
  740.   }
  741.   return(rv);
  742. }
  743. */
  744.  
  745. void InitNewMenus(struct NewMenu *NM)
  746. {
  747.   ULONG l;
  748.   
  749.   for(l=0;NM[l].nm_Type;l++)
  750.   {
  751.     if(NM[l].nm_Label != NM_BARLABEL)
  752.     {
  753.       NM[l].nm_Label  =GetString((LONG)NM[l].nm_Label);
  754.       if(NM[l].nm_CommKey=GetString((LONG)NM[l].nm_CommKey))
  755.       {
  756.         switch(strlen(NM[l].nm_CommKey))
  757.         {
  758.           case 0:
  759.             NM[l].nm_CommKey=0;
  760.             break;            
  761.           case 1:
  762.             break;
  763.           default:
  764.             NM[l].nm_Flags|=NM_COMMANDSTRING;
  765.         }
  766.       }
  767.     }
  768.   }
  769. }
  770.